import type { RequestEventStreamOptions } from 'ofetch'

const docsFilesApi = {
    /**
     * 流式对话
     *
     * @param {Object} params
     * @param {string} params.code 文件编号
     * @param {string} params.type 提问类型
     * @param {string} params.question 提问问题
     * @param {RequestEventStreamOptions} config
     * @author zero
     */
    sendChat(params: {
        code: string;
        type: string;
        question?: string
    }, config: RequestEventStreamOptions): Promise<any> {
        return $request.eventStream({
            url: '/apply/docs/files/chat',
            method: 'POST',
            params: params
        }, config)
    },

    /**
     * 文件模式
     *
     * @returns {Promise<DocFilesPromptsResponse[]>}
     * @author zero
     */
    prompts(): Promise<DocFilesPromptsResponse[]> {
        return $request.get<DocFilesPromptsResponse[]>({
            url: '/apply/docs/files/prompts'
        })
    },

    /**
     * 文件列表
     *
     * @param {Object} params
     * @param {string} [params.keyword] 关键词
     * @returns {Promise<DocFilesListResponse[]>}
     * @author zero
     */
    lists(params: {
        keyword?: string
    }): Promise<DocFilesListResponse[]> {
        const data: any = {}
        if (params.keyword) {
            data.keyword = params.keyword
        }
        return $request.get<DocFilesListResponse[]>({
            url: '/apply/docs/files/lists',
            params: data
        })
    },

    /**
     * 文件详情
     *
     * @param {Object} params
     * @param {string} params.code 文件编号
     * @returns {Promise<DocFilesDetailResponse>}
     * @author zero
     */
    detail(params: {
        code: string
    }): Promise<DocFilesDetailResponse> {
        return $request.get<DocFilesDetailResponse>({
            url: '/apply/docs/files/detail',
            params
        })
    },

    /**
     * 文件命名
     *
     * @param {Object} params
     * @param {string} [params.code] 文件编号
     * @param {string} [params.name] 当前页码
     * @author zero
     */
    rename(params: {
        code: string,
        name: string
    }): Promise<any> {
        return $request.post({
            url: '/apply/docs/files/rename',
            params
        })
    },

    /**
     * 文件删除
     *
     * @param {Object} params
     * @param {string} [params.code] 文件编号
     * @author zero
     */
    delete(params: { code: string }): Promise<any> {
        return $request.post({
            url: '/apply/docs/files/delete',
            params
        })
    },

    /**
     * 失败重试
     *
     * @param {Object} params
     * @param {string} [params.code] 文件编号
     * @author zero
     */
    retry(params: { code: string }): Promise<any> {
        return $request.post({
            url: '/apply/docs/files/retry',
            params
        })
    }
}

export default docsFilesApi
